enhance sort filter for rtes & trks. (#273)
authortsteven4 <tsteven4@users.noreply.github.com>
Mon, 19 Nov 2018 18:54:46 +0000 (11:54 -0700)
committerGitHub <noreply@github.com>
Mon, 19 Nov 2018 18:54:46 +0000 (11:54 -0700)
26 files changed:
filter_vecs.cc
reference/sortfilter_description_out.gpx [new file with mode: 0644]
reference/sortfilter_in.gpx
reference/sortfilter_out.gpx [deleted file]
reference/sortfilter_rtedesc_out.gpx [new file with mode: 0644]
reference/sortfilter_rtename_out.gpx [new file with mode: 0644]
reference/sortfilter_rtenum_out.gpx [new file with mode: 0644]
reference/sortfilter_shortname_out.gpx [new file with mode: 0644]
reference/sortfilter_time_out.gpx [new file with mode: 0644]
reference/sortfilter_trkdesc_out.gpx [new file with mode: 0644]
reference/sortfilter_trkname_out.gpx [new file with mode: 0644]
reference/sortfilter_trknum_out.gpx [new file with mode: 0644]
sort.cc
sort.h
testo.d/sort.test
xmldoc/filters/options/sort-description.xml
xmldoc/filters/options/sort-gcid.xml
xmldoc/filters/options/sort-rtedesc.xml [new file with mode: 0644]
xmldoc/filters/options/sort-rtename.xml [new file with mode: 0644]
xmldoc/filters/options/sort-rtenum.xml [new file with mode: 0644]
xmldoc/filters/options/sort-shortname.xml
xmldoc/filters/options/sort-time.xml
xmldoc/filters/options/sort-trkdesc.xml [new file with mode: 0644]
xmldoc/filters/options/sort-trkname.xml [new file with mode: 0644]
xmldoc/filters/options/sort-trknum.xml [new file with mode: 0644]
xmldoc/filters/sort.xml

index 23e0443f582edd3a9e77dfd7a00cf53534d708dd..6928f5d52fc95d08f41f007cbd68d80dd4ac8952 100644 (file)
@@ -129,7 +129,7 @@ fl_vecs_t filter_vec_list[] = {
     {
       &sort,
       "sort",
-      "Rearrange waypoints by resorting",
+      "Rearrange waypoints, routes and/or tracks by resorting",
     },
     {
       &stackfilt,
diff --git a/reference/sortfilter_description_out.gpx b/reference/sortfilter_description_out.gpx
new file mode 100644 (file)
index 0000000..6b9dd70
--- /dev/null
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="25.600000000" minlon="-112.900000000" maxlat="48.858370100" maxlon="2.292292600"/>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.250Z</time>
+    <name>b</name>
+    <cmt>a</cmt>
+    <desc>a</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.750Z</time>
+    <name>a</name>
+    <cmt>b</cmt>
+    <desc>b</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-07T05:04:03.750Z</time>
+    <name>d</name>
+    <cmt>c</cmt>
+    <desc>c</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-05T05:04:03.750Z</time>
+    <name>c</name>
+    <cmt>d</cmt>
+    <desc>d</desc>
+  </wpt>
+  <rte>
+    <name>b</name>
+    <desc>c</desc>
+    <number>11163</number>
+    <rtept lat="47.600000000" lon="-89.900000000">
+      <name>RPT001</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>a</name>
+    <desc>b</desc>
+    <number>15939</number>
+    <rtept lat="47.700000000" lon="-89.800000000">
+      <name>RPT002</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>c</name>
+    <desc>a</desc>
+    <number>10607</number>
+    <rtept lat="47.800000000" lon="-89.700000000">
+      <name>RPT003</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>d</name>
+    <desc>d</desc>
+    <number>24282</number>
+    <rtept lat="47.900000000" lon="-89.600000000">
+      <name>RPT004</name>
+    </rtept>
+  </rte>
+  <trk>
+    <name>d</name>
+    <desc>b</desc>
+    <number>31163</number>
+    <trkseg>
+      <trkpt lat="25.600000000" lon="-112.900000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>b</name>
+    <desc>d</desc>
+    <number>15939</number>
+    <trkseg>
+      <trkpt lat="25.700000000" lon="-112.800000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>a</name>
+    <desc>a</desc>
+    <number>607</number>
+    <trkseg>
+      <trkpt lat="25.800000000" lon="-112.700000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>c</name>
+    <desc>c</desc>
+    <number>24282</number>
+    <trkseg>
+      <trkpt lat="25.900000000" lon="-112.600000000"/>
+    </trkseg>
+  </trk>
+</gpx>
index 2fb72cad4199ea73cbaf95d1e660d76190ec0fcd..230d5fc282857875ada34e563a7b3247aeee4c60 100644 (file)
@@ -1,15 +1,93 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<gpx version="1.0" creator="tsteven4" xmlns="http://www.topografix.com/GPX/1/0">
-  <wpt lat="48.8583701" lon="2.2922926">
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="25.600000000" minlon="-112.900000000" maxlat="48.858370100" maxlon="2.292292600"/>
+  <wpt lat="48.858370100" lon="2.292292600">
     <time>2018-07-06T05:04:03.750Z</time>
+    <name>a</name>
+    <cmt>b</cmt>
+    <desc>b</desc>
   </wpt>
-  <wpt lat="48.8583701" lon="2.2922926">
+  <wpt lat="48.858370100" lon="2.292292600">
     <time>2018-07-06T05:04:03.250Z</time>
+    <name>b</name>
+    <cmt>a</cmt>
+    <desc>a</desc>
   </wpt>
-  <wpt lat="48.8583701" lon="2.2922926">
+  <wpt lat="48.858370100" lon="2.292292600">
     <time>2018-07-07T05:04:03.750Z</time>
+    <name>d</name>
+    <cmt>c</cmt>
+    <desc>c</desc>
   </wpt>
-  <wpt lat="48.8583701" lon="2.2922926">
+  <wpt lat="48.858370100" lon="2.292292600">
     <time>2018-07-05T05:04:03.750Z</time>
+    <name>c</name>
+    <cmt>d</cmt>
+    <desc>d</desc>
   </wpt>
+  <rte>
+    <name>b</name>
+    <desc>c</desc>
+    <number>11163</number>
+    <rtept lat="47.600000000" lon="-89.900000000">
+      <name>RPT001</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>a</name>
+    <desc>b</desc>
+    <number>15939</number>
+    <rtept lat="47.700000000" lon="-89.800000000">
+      <name>RPT002</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>c</name>
+    <desc>a</desc>
+    <number>10607</number>
+    <rtept lat="47.800000000" lon="-89.700000000">
+      <name>RPT003</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>d</name>
+    <desc>d</desc>
+    <number>24282</number>
+    <rtept lat="47.900000000" lon="-89.600000000">
+      <name>RPT004</name>
+    </rtept>
+  </rte>
+  <trk>
+    <name>d</name>
+    <desc>b</desc>
+    <number>31163</number>
+    <trkseg>
+      <trkpt lat="25.600000000" lon="-112.900000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>b</name>
+    <desc>d</desc>
+    <number>15939</number>
+    <trkseg>
+      <trkpt lat="25.700000000" lon="-112.800000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>a</name>
+    <desc>a</desc>
+    <number>607</number>
+    <trkseg>
+      <trkpt lat="25.800000000" lon="-112.700000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>c</name>
+    <desc>c</desc>
+    <number>24282</number>
+    <trkseg>
+      <trkpt lat="25.900000000" lon="-112.600000000"/>
+    </trkseg>
+  </trk>
 </gpx>
diff --git a/reference/sortfilter_out.gpx b/reference/sortfilter_out.gpx
deleted file mode 100644 (file)
index 2feb73b..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
-  <time>1970-01-01T00:00:00Z</time>
-  <bounds minlat="48.858370100" minlon="2.292292600" maxlat="48.858370100" maxlon="2.292292600"/>
-  <wpt lat="48.858370100" lon="2.292292600">
-    <time>2018-07-05T05:04:03.750Z</time>
-    <name>WPT004</name>
-    <cmt>WPT004</cmt>
-    <desc>WPT004</desc>
-  </wpt>
-  <wpt lat="48.858370100" lon="2.292292600">
-    <time>2018-07-06T05:04:03.250Z</time>
-    <name>WPT002</name>
-    <cmt>WPT002</cmt>
-    <desc>WPT002</desc>
-  </wpt>
-  <wpt lat="48.858370100" lon="2.292292600">
-    <time>2018-07-06T05:04:03.750Z</time>
-    <name>WPT001</name>
-    <cmt>WPT001</cmt>
-    <desc>WPT001</desc>
-  </wpt>
-  <wpt lat="48.858370100" lon="2.292292600">
-    <time>2018-07-07T05:04:03.750Z</time>
-    <name>WPT003</name>
-    <cmt>WPT003</cmt>
-    <desc>WPT003</desc>
-  </wpt>
-</gpx>
diff --git a/reference/sortfilter_rtedesc_out.gpx b/reference/sortfilter_rtedesc_out.gpx
new file mode 100644 (file)
index 0000000..ce340d0
--- /dev/null
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="25.600000000" minlon="-112.900000000" maxlat="48.858370100" maxlon="2.292292600"/>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.750Z</time>
+    <name>a</name>
+    <cmt>b</cmt>
+    <desc>b</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.250Z</time>
+    <name>b</name>
+    <cmt>a</cmt>
+    <desc>a</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-07T05:04:03.750Z</time>
+    <name>d</name>
+    <cmt>c</cmt>
+    <desc>c</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-05T05:04:03.750Z</time>
+    <name>c</name>
+    <cmt>d</cmt>
+    <desc>d</desc>
+  </wpt>
+  <rte>
+    <name>c</name>
+    <desc>a</desc>
+    <number>10607</number>
+    <rtept lat="47.800000000" lon="-89.700000000">
+      <name>RPT003</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>a</name>
+    <desc>b</desc>
+    <number>15939</number>
+    <rtept lat="47.700000000" lon="-89.800000000">
+      <name>RPT002</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>b</name>
+    <desc>c</desc>
+    <number>11163</number>
+    <rtept lat="47.600000000" lon="-89.900000000">
+      <name>RPT001</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>d</name>
+    <desc>d</desc>
+    <number>24282</number>
+    <rtept lat="47.900000000" lon="-89.600000000">
+      <name>RPT004</name>
+    </rtept>
+  </rte>
+  <trk>
+    <name>d</name>
+    <desc>b</desc>
+    <number>31163</number>
+    <trkseg>
+      <trkpt lat="25.600000000" lon="-112.900000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>b</name>
+    <desc>d</desc>
+    <number>15939</number>
+    <trkseg>
+      <trkpt lat="25.700000000" lon="-112.800000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>a</name>
+    <desc>a</desc>
+    <number>607</number>
+    <trkseg>
+      <trkpt lat="25.800000000" lon="-112.700000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>c</name>
+    <desc>c</desc>
+    <number>24282</number>
+    <trkseg>
+      <trkpt lat="25.900000000" lon="-112.600000000"/>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/reference/sortfilter_rtename_out.gpx b/reference/sortfilter_rtename_out.gpx
new file mode 100644 (file)
index 0000000..5715ae7
--- /dev/null
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="25.600000000" minlon="-112.900000000" maxlat="48.858370100" maxlon="2.292292600"/>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.750Z</time>
+    <name>a</name>
+    <cmt>b</cmt>
+    <desc>b</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.250Z</time>
+    <name>b</name>
+    <cmt>a</cmt>
+    <desc>a</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-07T05:04:03.750Z</time>
+    <name>d</name>
+    <cmt>c</cmt>
+    <desc>c</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-05T05:04:03.750Z</time>
+    <name>c</name>
+    <cmt>d</cmt>
+    <desc>d</desc>
+  </wpt>
+  <rte>
+    <name>a</name>
+    <desc>b</desc>
+    <number>15939</number>
+    <rtept lat="47.700000000" lon="-89.800000000">
+      <name>RPT002</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>b</name>
+    <desc>c</desc>
+    <number>11163</number>
+    <rtept lat="47.600000000" lon="-89.900000000">
+      <name>RPT001</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>c</name>
+    <desc>a</desc>
+    <number>10607</number>
+    <rtept lat="47.800000000" lon="-89.700000000">
+      <name>RPT003</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>d</name>
+    <desc>d</desc>
+    <number>24282</number>
+    <rtept lat="47.900000000" lon="-89.600000000">
+      <name>RPT004</name>
+    </rtept>
+  </rte>
+  <trk>
+    <name>d</name>
+    <desc>b</desc>
+    <number>31163</number>
+    <trkseg>
+      <trkpt lat="25.600000000" lon="-112.900000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>b</name>
+    <desc>d</desc>
+    <number>15939</number>
+    <trkseg>
+      <trkpt lat="25.700000000" lon="-112.800000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>a</name>
+    <desc>a</desc>
+    <number>607</number>
+    <trkseg>
+      <trkpt lat="25.800000000" lon="-112.700000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>c</name>
+    <desc>c</desc>
+    <number>24282</number>
+    <trkseg>
+      <trkpt lat="25.900000000" lon="-112.600000000"/>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/reference/sortfilter_rtenum_out.gpx b/reference/sortfilter_rtenum_out.gpx
new file mode 100644 (file)
index 0000000..5a445c1
--- /dev/null
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="25.600000000" minlon="-112.900000000" maxlat="48.858370100" maxlon="2.292292600"/>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.750Z</time>
+    <name>a</name>
+    <cmt>b</cmt>
+    <desc>b</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.250Z</time>
+    <name>b</name>
+    <cmt>a</cmt>
+    <desc>a</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-07T05:04:03.750Z</time>
+    <name>d</name>
+    <cmt>c</cmt>
+    <desc>c</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-05T05:04:03.750Z</time>
+    <name>c</name>
+    <cmt>d</cmt>
+    <desc>d</desc>
+  </wpt>
+  <rte>
+    <name>c</name>
+    <desc>a</desc>
+    <number>10607</number>
+    <rtept lat="47.800000000" lon="-89.700000000">
+      <name>RPT003</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>b</name>
+    <desc>c</desc>
+    <number>11163</number>
+    <rtept lat="47.600000000" lon="-89.900000000">
+      <name>RPT001</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>a</name>
+    <desc>b</desc>
+    <number>15939</number>
+    <rtept lat="47.700000000" lon="-89.800000000">
+      <name>RPT002</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>d</name>
+    <desc>d</desc>
+    <number>24282</number>
+    <rtept lat="47.900000000" lon="-89.600000000">
+      <name>RPT004</name>
+    </rtept>
+  </rte>
+  <trk>
+    <name>d</name>
+    <desc>b</desc>
+    <number>31163</number>
+    <trkseg>
+      <trkpt lat="25.600000000" lon="-112.900000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>b</name>
+    <desc>d</desc>
+    <number>15939</number>
+    <trkseg>
+      <trkpt lat="25.700000000" lon="-112.800000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>a</name>
+    <desc>a</desc>
+    <number>607</number>
+    <trkseg>
+      <trkpt lat="25.800000000" lon="-112.700000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>c</name>
+    <desc>c</desc>
+    <number>24282</number>
+    <trkseg>
+      <trkpt lat="25.900000000" lon="-112.600000000"/>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/reference/sortfilter_shortname_out.gpx b/reference/sortfilter_shortname_out.gpx
new file mode 100644 (file)
index 0000000..54c9d0a
--- /dev/null
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="25.600000000" minlon="-112.900000000" maxlat="48.858370100" maxlon="2.292292600"/>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.750Z</time>
+    <name>a</name>
+    <cmt>b</cmt>
+    <desc>b</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.250Z</time>
+    <name>b</name>
+    <cmt>a</cmt>
+    <desc>a</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-05T05:04:03.750Z</time>
+    <name>c</name>
+    <cmt>d</cmt>
+    <desc>d</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-07T05:04:03.750Z</time>
+    <name>d</name>
+    <cmt>c</cmt>
+    <desc>c</desc>
+  </wpt>
+  <rte>
+    <name>b</name>
+    <desc>c</desc>
+    <number>11163</number>
+    <rtept lat="47.600000000" lon="-89.900000000">
+      <name>RPT001</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>a</name>
+    <desc>b</desc>
+    <number>15939</number>
+    <rtept lat="47.700000000" lon="-89.800000000">
+      <name>RPT002</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>c</name>
+    <desc>a</desc>
+    <number>10607</number>
+    <rtept lat="47.800000000" lon="-89.700000000">
+      <name>RPT003</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>d</name>
+    <desc>d</desc>
+    <number>24282</number>
+    <rtept lat="47.900000000" lon="-89.600000000">
+      <name>RPT004</name>
+    </rtept>
+  </rte>
+  <trk>
+    <name>d</name>
+    <desc>b</desc>
+    <number>31163</number>
+    <trkseg>
+      <trkpt lat="25.600000000" lon="-112.900000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>b</name>
+    <desc>d</desc>
+    <number>15939</number>
+    <trkseg>
+      <trkpt lat="25.700000000" lon="-112.800000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>a</name>
+    <desc>a</desc>
+    <number>607</number>
+    <trkseg>
+      <trkpt lat="25.800000000" lon="-112.700000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>c</name>
+    <desc>c</desc>
+    <number>24282</number>
+    <trkseg>
+      <trkpt lat="25.900000000" lon="-112.600000000"/>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/reference/sortfilter_time_out.gpx b/reference/sortfilter_time_out.gpx
new file mode 100644 (file)
index 0000000..488b10e
--- /dev/null
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="25.600000000" minlon="-112.900000000" maxlat="48.858370100" maxlon="2.292292600"/>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-05T05:04:03.750Z</time>
+    <name>c</name>
+    <cmt>d</cmt>
+    <desc>d</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.250Z</time>
+    <name>b</name>
+    <cmt>a</cmt>
+    <desc>a</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.750Z</time>
+    <name>a</name>
+    <cmt>b</cmt>
+    <desc>b</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-07T05:04:03.750Z</time>
+    <name>d</name>
+    <cmt>c</cmt>
+    <desc>c</desc>
+  </wpt>
+  <rte>
+    <name>b</name>
+    <desc>c</desc>
+    <number>11163</number>
+    <rtept lat="47.600000000" lon="-89.900000000">
+      <name>RPT001</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>a</name>
+    <desc>b</desc>
+    <number>15939</number>
+    <rtept lat="47.700000000" lon="-89.800000000">
+      <name>RPT002</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>c</name>
+    <desc>a</desc>
+    <number>10607</number>
+    <rtept lat="47.800000000" lon="-89.700000000">
+      <name>RPT003</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>d</name>
+    <desc>d</desc>
+    <number>24282</number>
+    <rtept lat="47.900000000" lon="-89.600000000">
+      <name>RPT004</name>
+    </rtept>
+  </rte>
+  <trk>
+    <name>d</name>
+    <desc>b</desc>
+    <number>31163</number>
+    <trkseg>
+      <trkpt lat="25.600000000" lon="-112.900000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>b</name>
+    <desc>d</desc>
+    <number>15939</number>
+    <trkseg>
+      <trkpt lat="25.700000000" lon="-112.800000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>a</name>
+    <desc>a</desc>
+    <number>607</number>
+    <trkseg>
+      <trkpt lat="25.800000000" lon="-112.700000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>c</name>
+    <desc>c</desc>
+    <number>24282</number>
+    <trkseg>
+      <trkpt lat="25.900000000" lon="-112.600000000"/>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/reference/sortfilter_trkdesc_out.gpx b/reference/sortfilter_trkdesc_out.gpx
new file mode 100644 (file)
index 0000000..90fd070
--- /dev/null
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="25.600000000" minlon="-112.900000000" maxlat="48.858370100" maxlon="2.292292600"/>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.750Z</time>
+    <name>a</name>
+    <cmt>b</cmt>
+    <desc>b</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.250Z</time>
+    <name>b</name>
+    <cmt>a</cmt>
+    <desc>a</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-07T05:04:03.750Z</time>
+    <name>d</name>
+    <cmt>c</cmt>
+    <desc>c</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-05T05:04:03.750Z</time>
+    <name>c</name>
+    <cmt>d</cmt>
+    <desc>d</desc>
+  </wpt>
+  <rte>
+    <name>b</name>
+    <desc>c</desc>
+    <number>11163</number>
+    <rtept lat="47.600000000" lon="-89.900000000">
+      <name>RPT001</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>a</name>
+    <desc>b</desc>
+    <number>15939</number>
+    <rtept lat="47.700000000" lon="-89.800000000">
+      <name>RPT002</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>c</name>
+    <desc>a</desc>
+    <number>10607</number>
+    <rtept lat="47.800000000" lon="-89.700000000">
+      <name>RPT003</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>d</name>
+    <desc>d</desc>
+    <number>24282</number>
+    <rtept lat="47.900000000" lon="-89.600000000">
+      <name>RPT004</name>
+    </rtept>
+  </rte>
+  <trk>
+    <name>a</name>
+    <desc>a</desc>
+    <number>607</number>
+    <trkseg>
+      <trkpt lat="25.800000000" lon="-112.700000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>d</name>
+    <desc>b</desc>
+    <number>31163</number>
+    <trkseg>
+      <trkpt lat="25.600000000" lon="-112.900000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>c</name>
+    <desc>c</desc>
+    <number>24282</number>
+    <trkseg>
+      <trkpt lat="25.900000000" lon="-112.600000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>b</name>
+    <desc>d</desc>
+    <number>15939</number>
+    <trkseg>
+      <trkpt lat="25.700000000" lon="-112.800000000"/>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/reference/sortfilter_trkname_out.gpx b/reference/sortfilter_trkname_out.gpx
new file mode 100644 (file)
index 0000000..38d69cc
--- /dev/null
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="25.600000000" minlon="-112.900000000" maxlat="48.858370100" maxlon="2.292292600"/>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.750Z</time>
+    <name>a</name>
+    <cmt>b</cmt>
+    <desc>b</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.250Z</time>
+    <name>b</name>
+    <cmt>a</cmt>
+    <desc>a</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-07T05:04:03.750Z</time>
+    <name>d</name>
+    <cmt>c</cmt>
+    <desc>c</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-05T05:04:03.750Z</time>
+    <name>c</name>
+    <cmt>d</cmt>
+    <desc>d</desc>
+  </wpt>
+  <rte>
+    <name>b</name>
+    <desc>c</desc>
+    <number>11163</number>
+    <rtept lat="47.600000000" lon="-89.900000000">
+      <name>RPT001</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>a</name>
+    <desc>b</desc>
+    <number>15939</number>
+    <rtept lat="47.700000000" lon="-89.800000000">
+      <name>RPT002</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>c</name>
+    <desc>a</desc>
+    <number>10607</number>
+    <rtept lat="47.800000000" lon="-89.700000000">
+      <name>RPT003</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>d</name>
+    <desc>d</desc>
+    <number>24282</number>
+    <rtept lat="47.900000000" lon="-89.600000000">
+      <name>RPT004</name>
+    </rtept>
+  </rte>
+  <trk>
+    <name>a</name>
+    <desc>a</desc>
+    <number>607</number>
+    <trkseg>
+      <trkpt lat="25.800000000" lon="-112.700000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>b</name>
+    <desc>d</desc>
+    <number>15939</number>
+    <trkseg>
+      <trkpt lat="25.700000000" lon="-112.800000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>c</name>
+    <desc>c</desc>
+    <number>24282</number>
+    <trkseg>
+      <trkpt lat="25.900000000" lon="-112.600000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>d</name>
+    <desc>b</desc>
+    <number>31163</number>
+    <trkseg>
+      <trkpt lat="25.600000000" lon="-112.900000000"/>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/reference/sortfilter_trknum_out.gpx b/reference/sortfilter_trknum_out.gpx
new file mode 100644 (file)
index 0000000..38d69cc
--- /dev/null
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.0" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/0">
+  <time>1970-01-01T00:00:00Z</time>
+  <bounds minlat="25.600000000" minlon="-112.900000000" maxlat="48.858370100" maxlon="2.292292600"/>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.750Z</time>
+    <name>a</name>
+    <cmt>b</cmt>
+    <desc>b</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-06T05:04:03.250Z</time>
+    <name>b</name>
+    <cmt>a</cmt>
+    <desc>a</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-07T05:04:03.750Z</time>
+    <name>d</name>
+    <cmt>c</cmt>
+    <desc>c</desc>
+  </wpt>
+  <wpt lat="48.858370100" lon="2.292292600">
+    <time>2018-07-05T05:04:03.750Z</time>
+    <name>c</name>
+    <cmt>d</cmt>
+    <desc>d</desc>
+  </wpt>
+  <rte>
+    <name>b</name>
+    <desc>c</desc>
+    <number>11163</number>
+    <rtept lat="47.600000000" lon="-89.900000000">
+      <name>RPT001</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>a</name>
+    <desc>b</desc>
+    <number>15939</number>
+    <rtept lat="47.700000000" lon="-89.800000000">
+      <name>RPT002</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>c</name>
+    <desc>a</desc>
+    <number>10607</number>
+    <rtept lat="47.800000000" lon="-89.700000000">
+      <name>RPT003</name>
+    </rtept>
+  </rte>
+  <rte>
+    <name>d</name>
+    <desc>d</desc>
+    <number>24282</number>
+    <rtept lat="47.900000000" lon="-89.600000000">
+      <name>RPT004</name>
+    </rtept>
+  </rte>
+  <trk>
+    <name>a</name>
+    <desc>a</desc>
+    <number>607</number>
+    <trkseg>
+      <trkpt lat="25.800000000" lon="-112.700000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>b</name>
+    <desc>d</desc>
+    <number>15939</number>
+    <trkseg>
+      <trkpt lat="25.700000000" lon="-112.800000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>c</name>
+    <desc>c</desc>
+    <number>24282</number>
+    <trkseg>
+      <trkpt lat="25.900000000" lon="-112.600000000"/>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>d</name>
+    <desc>b</desc>
+    <number>31163</number>
+    <trkseg>
+      <trkpt lat="25.600000000" lon="-112.900000000"/>
+    </trkseg>
+  </trk>
+</gpx>
diff --git a/sort.cc b/sort.cc
index 8c096d3452d89eefcdf107ffc1fb49f633193a40..c4242bc3fee7e8c75bd1a546178a9b40e6b352be 100644 (file)
--- a/sort.cc
+++ b/sort.cc
 #include "defs.h"
 #include "filterdefs.h"
 #include "sort.h"
-#include <cstdlib>
+#include <QtCore/QString>    // for QString
+#include <cstdlib>           // for abort
+
+extern queue my_route_head;
+extern queue my_track_head;
 
 #if FILTERS_ENABLED
 
 template <class T>
-inline int sgn(T v) {
+inline int sgn(T v)
+{
 // Returns 1 if v > 0, -1 if v < 0, and 0 if v is zero
   return (v > T(0)) - (v < T(0));
 }
 
-int SortFilter::sort_comp(const queue* a, const queue* b)
+template <class T>
+inline int cmp(T a, T b)
 {
-  const Waypoint* x1 = reinterpret_cast<const Waypoint *>(a);
-  const Waypoint* x2 = reinterpret_cast<const Waypoint *>(b);
+// Returns 1 if a > b, -1 if a < b, and 0 if a = b
+// note possible overflow in computing sgn(a-b) is avoided.
+  return (a > b) - (a < b);
+}
 
-  switch (sort_mode)  {
-  case sm_gcid:
-    return x1->gc_data->id - x2->gc_data->id;
-  case sm_shortname:
-    return x1->shortname.compare(x2->shortname);
-  case sm_description:
+int SortFilter::sort_comp_wpt(const queue* a, const queue* b)
+{
+  const Waypoint* x1 = reinterpret_cast<const Waypoint*>(a);
+  const Waypoint* x2 = reinterpret_cast<const Waypoint*>(b);
+
+  switch (wpt_sort_mode)  {
+  case SortModeWpt::description:
     return x1->description.compare(x2->description);
-  case sm_time:
+  case SortModeWpt::gcid:
+    return cmp(x1->gc_data->id, x2->gc_data->id);
+  case SortModeWpt::shortname:
+    return x1->shortname.compare(x2->shortname);
+  case SortModeWpt::time:
     return sgn(x2->GetCreationTime().msecsTo(x1->GetCreationTime()));
   default:
     abort();
@@ -51,31 +64,88 @@ int SortFilter::sort_comp(const queue* a, const queue* b)
   }
 }
 
-int SortFilter::SortCompFunctor::operator()(const queue* a, const queue* b)
+int SortFilter::sort_comp_rh(const queue* a, const queue* b)
+{
+  const route_head* x1 = reinterpret_cast<const route_head*>(a);
+  const route_head* x2 = reinterpret_cast<const route_head*>(b);
+
+  switch (rh_sort_mode)  {
+  case SortModeRteHd::description:
+    return x1->rte_desc.compare(x2->rte_desc);
+  case SortModeRteHd::name:
+    return x1->rte_name.compare(x2->rte_name);
+  case SortModeRteHd::number:
+    return cmp(x1->rte_num, x2->rte_num);
+  default:
+    abort();
+    return 0; /* Internal caller error. */
+  }
+}
+
+int SortFilter::SortCompWptFunctor::operator()(const queue* a, const queue* b)
+{
+  return that->sort_comp_wpt(a, b);
+}
+
+int SortFilter::SortCompRteHdFunctor::operator()(const queue* a, const queue* b)
 {
-  return that->sort_comp(a, b);
+  return that->sort_comp_rh(a, b);
 }
 
 void SortFilter::process()
 {
-  SortCompFunctor sort_comp(*this);
+  SortCompWptFunctor sort_comp_wpt_f(*this);
+  SortCompRteHdFunctor sort_comp_rh_f(*this);
 
-  sortqueue(&waypt_head, sort_comp);
+  if (wpt_sort_mode != SortModeWpt::none) {
+    sortqueue(&waypt_head, sort_comp_wpt_f);
+  }
+  if (rte_sort_mode != SortModeRteHd::none) {
+    rh_sort_mode = rte_sort_mode;
+    sortqueue(&my_route_head, sort_comp_rh_f);
+  }
+  if (trk_sort_mode != SortModeRteHd::none) {
+    rh_sort_mode = trk_sort_mode;
+    sortqueue(&my_track_head, sort_comp_rh_f);
+  }
 }
 
 void SortFilter::init()
 {
+  // sort waypts by
+  if (opt_sm_description) {
+    wpt_sort_mode = SortModeWpt::description;
+  }
   if (opt_sm_gcid) {
-    sort_mode = sm_gcid;
+    wpt_sort_mode = SortModeWpt::gcid;
   }
   if (opt_sm_shortname) {
-    sort_mode = sm_shortname;
-  }
-  if (opt_sm_description) {
-    sort_mode = sm_description;
+    wpt_sort_mode = SortModeWpt::shortname;
   }
   if (opt_sm_time) {
-    sort_mode = sm_time;
+    wpt_sort_mode = SortModeWpt::time;
+  }
+
+  // sort routes by
+  if (opt_sm_rtedesc) {
+    rte_sort_mode = SortModeRteHd::description;
+  }
+  if (opt_sm_rtename) {
+    rte_sort_mode = SortModeRteHd::name;
+  }
+  if (opt_sm_rtenum) {
+    rte_sort_mode = SortModeRteHd::number;
+  }
+
+  // sort tracks by
+  if (opt_sm_trkdesc) {
+    trk_sort_mode = SortModeRteHd::description;
+  }
+  if (opt_sm_trkname) {
+    trk_sort_mode = SortModeRteHd::name;
+  }
+  if (opt_sm_trknum) {
+    trk_sort_mode = SortModeRteHd::number;
   }
 }
 
diff --git a/sort.h b/sort.h
index 4dd852aa595618e0780ad75ce7a6601d9d497fe8..68e610f1f0e2fcbd197d7af9d91ea77cf96b78e8 100644 (file)
--- a/sort.h
+++ b/sort.h
@@ -39,44 +39,92 @@ public:
   void process() override;
 
 private:
-  typedef enum {
-    sm_unknown = 0,
-    sm_gcid,
-    sm_shortname,
-    sm_description,
-    sm_time
-  } sort_mode_;
+  enum class SortModeWpt {
+    none,
+    description,
+    gcid,
+    shortname,
+    time
+  };
+
+  SortModeWpt wpt_sort_mode = SortModeWpt::none;       /* How are we sorting these? */
+
+  enum class SortModeRteHd {
+    none,
+    description,
+    name,
+    number
+  };
 
-  sort_mode_ sort_mode = sm_shortname; /* How are we sorting these? */
+  SortModeRteHd rte_sort_mode = SortModeRteHd::none;   /* How are we sorting these? */
+  SortModeRteHd trk_sort_mode = SortModeRteHd::none;   /* How are we sorting these? */
+  SortModeRteHd rh_sort_mode = SortModeRteHd::none;
 
   char* opt_sm_gcid, *opt_sm_shortname, *opt_sm_description, *opt_sm_time;
+  char* opt_sm_rtenum, *opt_sm_rtename, *opt_sm_rtedesc;
+  char* opt_sm_trknum, *opt_sm_trkname, *opt_sm_trkdesc;
 
-  arglist_t args[5] = {
+  arglist_t args[11] = {
     {
-      "gcid", &opt_sm_gcid, "Sort by numeric geocache ID",
+      "description", &opt_sm_description, "Sort waypoints by description",
       nullptr, ARGTYPE_BOOL, ARG_NOMINMAX, nullptr
     },
     {
-      "shortname", &opt_sm_shortname, "Sort by waypoint short name",
+      "gcid", &opt_sm_gcid, "Sort waypoints by numeric geocache ID",
+      nullptr, ARGTYPE_BEGIN_EXCL | ARGTYPE_BOOL, ARG_NOMINMAX, nullptr
+    },
+    {
+      "shortname", &opt_sm_shortname, "Sort waypoints by short name",
       nullptr, ARGTYPE_BOOL, ARG_NOMINMAX, nullptr
     },
     {
-      "description", &opt_sm_description, "Sort by waypoint description",
+      "time", &opt_sm_time, "Sort waypoints by time",
+      nullptr, ARGTYPE_END_EXCL | ARGTYPE_BOOL, ARG_NOMINMAX, nullptr
+    },
+    {
+      "rtedesc", &opt_sm_rtedesc, "Sort routes by description",
+      nullptr, ARGTYPE_END_EXCL | ARGTYPE_BOOL, ARG_NOMINMAX, nullptr
+    },
+    {
+      "rtename", &opt_sm_rtename, "Sort routes by name",
       nullptr, ARGTYPE_BOOL, ARG_NOMINMAX, nullptr
     },
     {
-      "time", &opt_sm_time, "Sort by time",
+      "rtenum", &opt_sm_rtenum, "Sort routes by number",
+      nullptr, ARGTYPE_BEGIN_EXCL | ARGTYPE_BOOL, ARG_NOMINMAX, nullptr
+    },
+    {
+      "trkdesc", &opt_sm_trkdesc, "Sort tracks by description",
+      nullptr, ARGTYPE_END_EXCL | ARGTYPE_BOOL, ARG_NOMINMAX, nullptr
+    },
+    {
+      "trkname", &opt_sm_trkname, "Sort tracks by name",
       nullptr, ARGTYPE_BOOL, ARG_NOMINMAX, nullptr
     },
+    {
+      "trknum", &opt_sm_trknum, "Sort tracks by number",
+      nullptr, ARGTYPE_BEGIN_EXCL | ARGTYPE_BOOL, ARG_NOMINMAX, nullptr
+    },
     ARG_TERMINATOR
   };
 
-  int sort_comp(const queue* a, const queue* b);
+  int sort_comp_wpt(const queue* a, const queue* b);
+  int sort_comp_rh(const queue* a, const queue* b);
+
+  class SortCompWptFunctor
+  {
+  public:
+    SortCompWptFunctor(SortFilter& obj) : that(&obj) {}
+    int operator()(const queue* a, const queue* b);
+
+  private:
+    SortFilter* that;
+  };
 
-  class SortCompFunctor
+  class SortCompRteHdFunctor
   {
   public:
-    SortCompFunctor(SortFilter& obj) : that(&obj) {}
+    SortCompRteHdFunctor(SortFilter& obj) : that(&obj) {}
     int operator()(const queue* a, const queue* b);
 
   private:
index cc00b34c0c6d2ffdd873bfae358f2fb1bc6a4eb3..56c51a507a04fd7c9a43b6e417376ddf477a298a 100644 (file)
@@ -4,6 +4,29 @@
 
 rm -f ${TMPDIR}/sortfilter*
 
-gpsbabel -i gpx -f ${REFERENCE}/sortfilter_in.gpx -x sort,time -o gpx -F ${TMPDIR}/sortfilter_out.gpx
-compare ${REFERENCE}/sortfilter_out.gpx ${TMPDIR}/sortfilter_out.gpx
+gpsbabel -i gpx -f ${REFERENCE}/sortfilter_in.gpx -x sort,time -o gpx -F ${TMPDIR}/sortfilter_time_out.gpx
+compare ${REFERENCE}/sortfilter_time_out.gpx ${TMPDIR}/sortfilter_time_out.gpx
 
+gpsbabel -i gpx -f ${REFERENCE}/sortfilter_in.gpx -x sort,shortname -o gpx -F ${TMPDIR}/sortfilter_shortname_out.gpx
+compare ${REFERENCE}/sortfilter_shortname_out.gpx ${TMPDIR}/sortfilter_shortname_out.gpx
+
+gpsbabel -i gpx -f ${REFERENCE}/sortfilter_in.gpx -x sort,description -o gpx -F ${TMPDIR}/sortfilter_description_out.gpx
+compare ${REFERENCE}/sortfilter_description_out.gpx ${TMPDIR}/sortfilter_description_out.gpx
+
+gpsbabel -i gpx -f ${REFERENCE}/sortfilter_in.gpx -x sort,rtenum -o gpx -F ${TMPDIR}/sortfilter_rtenum_out.gpx
+compare ${REFERENCE}/sortfilter_rtenum_out.gpx ${TMPDIR}/sortfilter_rtenum_out.gpx
+
+gpsbabel -i gpx -f ${REFERENCE}/sortfilter_in.gpx -x sort,rtename -o gpx -F ${TMPDIR}/sortfilter_rtename_out.gpx
+compare ${REFERENCE}/sortfilter_rtename_out.gpx ${TMPDIR}/sortfilter_rtename_out.gpx
+
+gpsbabel -i gpx -f ${REFERENCE}/sortfilter_in.gpx -x sort,rtedesc -o gpx -F ${TMPDIR}/sortfilter_rtedesc_out.gpx
+compare ${REFERENCE}/sortfilter_rtedesc_out.gpx ${TMPDIR}/sortfilter_rtedesc_out.gpx
+
+gpsbabel -i gpx -f ${REFERENCE}/sortfilter_in.gpx -x sort,trknum -o gpx -F ${TMPDIR}/sortfilter_trknum_out.gpx
+compare ${REFERENCE}/sortfilter_trknum_out.gpx ${TMPDIR}/sortfilter_trknum_out.gpx
+
+gpsbabel -i gpx -f ${REFERENCE}/sortfilter_in.gpx -x sort,trkname -o gpx -F ${TMPDIR}/sortfilter_trkname_out.gpx
+compare ${REFERENCE}/sortfilter_trkname_out.gpx ${TMPDIR}/sortfilter_trkname_out.gpx
+
+gpsbabel -i gpx -f ${REFERENCE}/sortfilter_in.gpx -x sort,trkdesc -o gpx -F ${TMPDIR}/sortfilter_trkdesc_out.gpx
+compare ${REFERENCE}/sortfilter_trkdesc_out.gpx ${TMPDIR}/sortfilter_trkdesc_out.gpx
index c629fce01657d39d7f1eb9e1fd85ab737c7f9dbf..af625c1fb816ccb7d247362218418cc117afa05f 100644 (file)
@@ -1,8 +1,7 @@
 <para>
-This option causes the waypoints to be sorted in alphabetical order by 
+This option causes the waypoints to be sorted in alphabetical order by
 description.
 </para>
 <para>
-This option is not valid in combination with any other option.
+This option is not valid in combination with gcid, shortname, and time.
 </para>
-
index c2431b77880035bdb7b1cc5817ef1864d036d27e..1d32d4c8d7be7e7beccafd43f033d89ec7959871 100644 (file)
@@ -1,8 +1,7 @@
 <para>
-If the data contains Groundspeak geocache IDs, this option causes the 
-waypoints to be sorted in alphabetical order by geocache ID.
+If the data contains Groundspeak geocache IDs, this option causes the
+waypoints to be sorted in numerical order by geocache ID.
 </para>
 <para>
-This option is not valid in combination with any other option.
+This option is not valid in combination with description, shortname, and time.
 </para>
-
diff --git a/xmldoc/filters/options/sort-rtedesc.xml b/xmldoc/filters/options/sort-rtedesc.xml
new file mode 100644 (file)
index 0000000..4575b3a
--- /dev/null
@@ -0,0 +1,7 @@
+<para>
+This option causes the routes to be sorted in alphabetical order by
+description.
+</para>
+<para>
+This option is not valid in combination with rtename and rtenum.
+</para>
diff --git a/xmldoc/filters/options/sort-rtename.xml b/xmldoc/filters/options/sort-rtename.xml
new file mode 100644 (file)
index 0000000..ca09a0d
--- /dev/null
@@ -0,0 +1,7 @@
+<para>
+This option causes the routes to be sorted in alphabetical order by
+name.
+</para>
+<para>
+This option is not valid in combination with rtedesc and rtenum.
+</para>
diff --git a/xmldoc/filters/options/sort-rtenum.xml b/xmldoc/filters/options/sort-rtenum.xml
new file mode 100644 (file)
index 0000000..448bf18
--- /dev/null
@@ -0,0 +1,7 @@
+<para>
+This option causes the routes to be sorted in numerical order by
+number.
+</para>
+<para>
+This option is not valid in combination with rtedesc and rtename.
+</para>
index cd4075ccb7108dbe5cee78b65329f9e95a509a26..995cffb59a3f42f7604264979562a310f7ea0a95 100644 (file)
@@ -1,8 +1,7 @@
 <para>
-This option causes the waypoints to be sorted in alphabetical order by 
+This option causes the waypoints to be sorted in alphabetical order by
 short name.
 </para>
 <para>
-This option is not valid in combination with any other option.
+This option is not valid in combination with description, gcid, and time.
 </para>
-
index c43f609028e321b8255a1484ddb59d6102418631..cdd1f45a71dd0b419c86c69e0da1af97a2b35a09 100644 (file)
@@ -1,8 +1,7 @@
 <para>
-This option causes the waypoints to be sorted in chronological order by 
+This option causes the waypoints to be sorted in chronological order by
 creation time.
 </para>
 <para>
-This option is not valid in combination with any other option.
+This option is not valid in combination with description, gcid, and shortname.
 </para>
-
diff --git a/xmldoc/filters/options/sort-trkdesc.xml b/xmldoc/filters/options/sort-trkdesc.xml
new file mode 100644 (file)
index 0000000..93d149a
--- /dev/null
@@ -0,0 +1,7 @@
+<para>
+This option causes the tracks to be sorted in alphabetical order by
+description.
+</para>
+<para>
+This option is not valid in combination with trkname and trknum.
+</para>
diff --git a/xmldoc/filters/options/sort-trkname.xml b/xmldoc/filters/options/sort-trkname.xml
new file mode 100644 (file)
index 0000000..4c74938
--- /dev/null
@@ -0,0 +1,7 @@
+<para>
+This option causes the tracks to be sorted in alphabetical order by
+name.
+</para>
+<para>
+This option is not valid in combination with trkdesc and trknum.
+</para>
diff --git a/xmldoc/filters/options/sort-trknum.xml b/xmldoc/filters/options/sort-trknum.xml
new file mode 100644 (file)
index 0000000..a2c6960
--- /dev/null
@@ -0,0 +1,7 @@
+<para>
+This option causes the tracks to be sorted in numerical order by
+number.
+</para>
+<para>
+This option is not valid in combination with trkdesc and trkname.
+</para>
index da4ad375e438b3c61315e40ed3aedcadfa81ba55..f6af2dc608de6d73baea3431fa0d5ffa0a09f2ea 100644 (file)
@@ -1,5 +1,4 @@
 <para>
-This filter sorts waypoints into alphabetical order by the selected field.
-You must specify exactly one of the options.
+This filter sorts waypoints, routes and/or tracks by the selected field(s).
 </para>